//
//  KLSlidingPasswordController.m
//  KeyLime
//
//  Created by Jesse Curry on 10/29/09.
//  Copyright 2009 Circonda, Inc. All rights reserved.
//

#import "KLSlidingPasswordController.h"

@interface KLSlidingPasswordController ()
- (void)verifyPasswordMatch: (NSNotification*)notification;
@end


@implementation KLSlidingPasswordController
@dynamic text;
 // The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName: (NSString*)nibNameOrNil bundle: (NSBundle*)nibBundleOrNil 
{
    if ( self = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil] ) 
	{
        textValue = [[NSString alloc] init];
    }
    return self;
}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad 
{
    [super viewDidLoad];
	
	[[NSNotificationCenter defaultCenter] addObserver: self 
											 selector: @selector(verifyPasswordMatch:) 
												 name: UITextFieldTextDidChangeNotification 
											   object: textField];
	[[NSNotificationCenter defaultCenter] addObserver: self 
											 selector: @selector(verifyPasswordMatch:) 
												 name: UITextFieldTextDidChangeNotification 
											   object: textField2];
	
	doneButton.enabled = NO; // Default to a disabled done button
}


/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (void)didReceiveMemoryWarning {
	// Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
	
	// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload 
{
	[[NSNotificationCenter defaultCenter] removeObserver: self 
													name: UITextFieldTextDidChangeNotification
												  object: textField];
	[[NSNotificationCenter defaultCenter] removeObserver: self 
													name: UITextFieldTextDidChangeNotification
												  object: textField2];
}

#pragma mark -
#pragma mark KLSlidingViewController Overrides
- (void)slideOn
{
	[super slideOn];
	[textField becomeFirstResponder];
	[textField setText: textValue];
	[textField2 setText: textValue];
}

- (void)slideOff
{
	if ( [textField isFirstResponder] )
		[textField resignFirstResponder];
	
	if ( [textField2 isFirstResponder] )
		[textField2 resignFirstResponder];
		
	[super slideOff];
}

#pragma mark -
#pragma mark Dynamic Properties
- (NSString*)text
{
	if ( [textField.text isEqualToString: textField2.text] )
		return [textField text];
	else
		return nil;
}

- (void)setText: (NSString*)theText
{
	[textValue release];
	textValue = [theText copy];
	
	[textField setText: theText];
	[textField2 setText: theText];
}

#pragma mark -
#pragma mark UITextFieldDelegate Methods
- (BOOL)textFieldShouldReturn: (UITextField*)theTextField
{
	if ( [theTextField isEqual: textField] )
	{	
		[textField2 becomeFirstResponder];
		return YES;
	}
	else
	{	
		//[self done: self];
		[textField becomeFirstResponder];
		return YES;
	}
}

#pragma mark UITextField Notifications
- (void)verifyPasswordMatch: (NSNotification*)notification
{
	// Enable the Done button if we have the same password in both fields.
	doneButton.enabled = ( [textField.text length] > 0 
						  && [textField.text isEqualToString: textField2.text] );
}

#pragma mark -
- (void)dealloc 
{
    [textValue release];
	[super dealloc];
}


@end
